#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygame
from pygame.locals import *

class clase:				# Modifica las opciones (resolucion y pantalla completa por ahora)
	def __init__(self,main):
		self.select = False
		self.opciones = [[150,255,255,255],[255,150,255,255],[255,255,150,255],[255,255,255,150]]
		self.fuente = main["graficos"]["fuente"]["20"]
		self.opciones_temp = {}
		self.opciones_temp["resolucion"]=main["general"]["resolucion"]
		self.opciones_temp["fullscreen"]=main["general"]["fullscreen"]
		self.resoluciones = [(800,600),(1024,768),(1600,900),(1920,1080)]
		if self.resoluciones.count(main["general"]["resolucion"]):	# Agrega la resolucion actual a la lista si no esta (no se si funciona)
			while self.resoluciones.index(main["general"]["resolucion"]):
				self.resoluciones.append(self.resoluciones[0])
				self.resoluciones.pop(0)
		
		self.fondo = pygame.image.load('recursos/img/config/fondo.png').convert() # Img de fondo
		self.fondo_rec = self.fondo.get_rect(center=((main["general"]["resolucion"][0]/2,main["general"]["resolucion"][1]/2)))
		self.fondo.blit(self.fuente.render("Configuracion", True, (255,255,255)),(25,25))
		
		self.botonresolucion = pygame.image.load('recursos/img/login/boton.png').convert()	# Botones para cambiar la resolucion
		self.botonresolucion_rec = self.botonresolucion.get_rect(center=(main["general"]["resolucion"][0]/2-100,self.fondo_rec.bottom-225))
		tamano = self.fuente.size("Resolucion")
		pos = (self.botonresolucion_rec.width/2-tamano[0]/2,self.botonresolucion_rec.height/2-tamano[1]/2)
		self.botonresolucion.blit(self.fuente.render("Resolucion", True, (255,255,255)),pos)
		
		self.botonresolucion2 = pygame.image.load('recursos/img/login/boton.png').convert()
		self.botonresolucion2_rec = self.botonresolucion2.get_rect(center=(main["general"]["resolucion"][0]/2+100,self.fondo_rec.bottom-225))
		tamano = self.fuente.size(str(self.resoluciones[0][0])+"x"+str(self.resoluciones[0][1]))
		pos = (self.botonresolucion2_rec.width/2-tamano[0]/2,self.botonresolucion2_rec.height/2-tamano[1]/2)
		self.botonresolucion2.blit(self.fuente.render(str(self.resoluciones[0][0])+"x"+str(self.resoluciones[0][1]), True, (255,255,255)),pos)
		
		self.botonfull = pygame.image.load('recursos/img/login/boton.png').convert()	# Botones para alternar el modo de pantalla
		self.botonfull_rec = self.botonfull.get_rect(center=(main["general"]["resolucion"][0]/2-100,self.fondo_rec.bottom-150))
		tamano = self.fuente.size("Fullscreen")
		pos = (self.botonfull_rec.width/2-tamano[0]/2,self.botonfull_rec.height/2-tamano[1]/2)
		self.botonfull.blit(self.fuente.render("Fullscreen", True, (255,255,255)),pos)
		
		self.botonfull2a = pygame.image.load('recursos/img/login/boton.png').convert()
		self.botonfull2b = pygame.image.load('recursos/img/login/boton_r.png').convert()
		if main["general"]["fullscreen"]:
			self.botonfull2 = [(self.botonfull2a,1),(self.botonfull2b,0)]
		else:
			self.botonfull2 = [(self.botonfull2b,0),(self.botonfull2a,1)]
		self.botonfull2_rec = self.botonfull2[0][0].get_rect(center=(main["general"]["resolucion"][0]/2+100,self.fondo_rec.bottom-150))
		
		self.botonatras = pygame.image.load('recursos/img/login/boton.png').convert()	# Boton para volver al menu sin guardar cambios
		self.botonatras_rec = self.botonatras.get_rect(bottomleft=(self.fondo_rec.left+25,self.fondo_rec.bottom-25))
		tamano = self.fuente.size("Atras")
		pos = (self.botonatras_rec.width/2-tamano[0]/2,self.botonatras_rec.height/2-tamano[1]/2)
		self.botonatras.blit(self.fuente.render("Atras", True, (255,255,255)),pos)
		
		self.botonaplicar = pygame.image.load('recursos/img/login/boton.png').convert()	# Boton para aplicar cambios
		self.botonaplicar_rec = self.botonaplicar.get_rect(bottomright=(self.fondo_rec.right-25,self.fondo_rec.bottom-25))
		tamano = self.fuente.size("Aplicar")
		pos = (self.botonaplicar_rec.width/2-tamano[0]/2,self.botonaplicar_rec.height/2-tamano[1]/2)
		self.botonaplicar.blit(self.fuente.render("Aplicar", True, (255,255,255)),pos)
		
	def seleccionar(self,main):
		pass
	
	def click(self,main):	# Controla si se clickeo algo
		if self.select:
			if main["general"]["evento"].type == pygame.MOUSEBUTTONDOWN:
				if main["general"]["evento"].button == 1:
					if self.botonresolucion_rec.collidepoint(main["general"]["evento"].pos) or self.botonresolucion2_rec.collidepoint(main["general"]["evento"].pos):
						self.resoluciones.append(self.resoluciones[0])
						self.resoluciones.pop(0)
						self.opciones_temp["resolucion"] = self.resoluciones[0]
						self.botonresolucion2 = pygame.image.load('recursos/img/login/boton.png').convert()
						self.botonresolucion2_rec = self.botonresolucion2.get_rect(center=(main["general"]["resolucion"][0]/2+100,self.fondo_rec.bottom-225))
						tamano = self.fuente.size(str(self.resoluciones[0][0])+"x"+str(self.resoluciones[0][1]))
						pos = (self.botonresolucion2_rec.width/2-tamano[0]/2,self.botonresolucion2_rec.height/2-tamano[1]/2)
						self.botonresolucion2.blit(self.fuente.render(str(self.resoluciones[0][0])+"x"+str(self.resoluciones[0][1]), True, (255,255,255)),pos)
					if self.botonfull_rec.collidepoint(main["general"]["evento"].pos) or self.botonfull2_rec.collidepoint(main["general"]["evento"].pos):
						self.botonfull2.append(self.botonfull2[0])
						self.botonfull2.pop(0)
						self.opciones_temp["fullscreen"] = self.botonfull2[0][1]
					if self.botonatras_rec.collidepoint(main["general"]["evento"].pos):
						main["ventana"]["borrar"].append("opciones")
						main["ventana"]["seleccionar"] = main["ventana"]["undo"]["deseleccionar"]
						main["ventana"]["undo"]["deseleccionar"] = main["ventana"]["undo2"]["deseleccionar"]
					if self.botonaplicar_rec.collidepoint(main["general"]["evento"].pos):	# Guarda la configuracion en config.cfg
						main["general"]["config"]["fullscreen"] = self.opciones_temp["fullscreen"]
						self.opciones_temp["resolucion"]=str(self.opciones_temp["resolucion"][0])+"x"+str(self.opciones_temp["resolucion"][1])
						main["general"]["config"]["resolucion"] = self.opciones_temp["resolucion"]
						lineas = []
						for linea in main["general"]["config"]:
							lineas.append(linea+"="+str(main["general"]["config"][linea])+"\n")
						config_txt = open("config.cfg", "w")
						config_txt.writelines(lineas)
						config_txt.close()
						main["ventana"]["borrar"].append("opciones")
						main["ventana"]["seleccionar"] = main["ventana"]["undo"]["deseleccionar"]
						main["ventana"]["undo"]["deseleccionar"] = main["ventana"]["undo2"]["deseleccionar"]
	
	def tecla(self,main):	# Controla si se apreto una tecla
		if self.select:
			if main["general"]["evento"].type == pygame.KEYDOWN:
				if main["general"]["evento"].key == pygame.K_UP:
					self.opciones.insert(0,self.opciones[-1])
					self.opciones.pop()
					self.contador1 = 15
				elif main["general"]["evento"].key == pygame.K_DOWN:
					self.opciones.append(self.opciones[0])
					self.opciones.pop(0)
					self.contador1 = 15
				elif main["general"]["evento"].key == pygame.K_RETURN:
					if self.opciones[0][0] == 150:
						self.resoluciones.append(self.resoluciones[0])
						self.resoluciones.pop(0)
						self.opciones_temp["resolucion"] = self.resoluciones[0]
						self.botonresolucion2 = pygame.image.load('recursos/img/login/boton.png').convert()
						self.botonresolucion2_rec = self.botonresolucion2.get_rect(center=(main["general"]["resolucion"][0]/2+100,self.fondo_rec.bottom-225))
						tamano = self.fuente.size(str(self.resoluciones[0][0])+"x"+str(self.resoluciones[0][1]))
						pos = (self.botonresolucion2_rec.width/2-tamano[0]/2,self.botonresolucion2_rec.height/2-tamano[1]/2)
						self.botonresolucion2.blit(self.fuente.render(str(self.resoluciones[0][0])+"x"+str(self.resoluciones[0][1]), True, (255,255,255)),pos)
					elif self.opciones[0][1] == 150:
						self.botonfull2.append(self.botonfull2[0])
						self.botonfull2.pop(0)
						self.opciones_temp["fullscreen"] = self.botonfull2[0][1]
					elif self.opciones[0][2] == 150:
						main["ventana"]["borrar"].append("opciones")
						main["ventana"]["seleccionar"] = main["ventana"]["undo"]["deseleccionar"]
						main["ventana"]["undo"]["deseleccionar"] = main["ventana"]["undo2"]["deseleccionar"]
					elif self.opciones[0][3] == 150:							# Guarda la configuracion en config.cfg
						main["general"]["config"]["fullscreen"] = self.opciones_temp["fullscreen"]
						self.opciones_temp["resolucion"]=str(self.opciones_temp["resolucion"][0])+"x"+str(self.opciones_temp["resolucion"][1])
						main["general"]["config"]["resolucion"] = self.opciones_temp["resolucion"]
						lineas = []
						for linea in main["general"]["config"]:
							lineas.append(linea+"="+str(main["general"]["config"][linea])+"\n")
						config_txt = open("config.cfg", "w")
						config_txt.writelines(lineas)
						config_txt.close()
						main["ventana"]["borrar"].append("opciones")
						main["ventana"]["seleccionar"] = main["ventana"]["undo"]["deseleccionar"]
						main["ventana"]["undo"]["deseleccionar"] = main["ventana"]["undo2"]["deseleccionar"]
					self.contador1 = 15
				elif main["general"]["evento"].key == pygame.K_ESCAPE:
					main["ventana"]["borrar"].append("opciones")
					main["ventana"]["seleccionar"] = main["ventana"]["undo"]["deseleccionar"]
					main["ventana"]["undo"]["deseleccionar"] = main["ventana"]["undo2"]["deseleccionar"]
	
	def proceso(self,main):		# Define la img a cada boton
		self.botonresolucion.set_alpha(self.opciones[0][0])
		self.botonresolucion2.set_alpha(self.opciones[0][0])
		self.botonfull.set_alpha(self.opciones[0][1])
		self.botonfull2[0][0].set_alpha(self.opciones[0][1])
		self.botonatras.set_alpha(self.opciones[0][2])
		self.botonaplicar.set_alpha(self.opciones[0][3])
		pos = main["ventana"]["pulsar"]["click"]["posicion"]
		if self.botonresolucion_rec.collidepoint(pos) or self.botonresolucion2_rec.collidepoint(pos):
			self.botonresolucion.set_alpha(200)
			self.botonresolucion2.set_alpha(200)
		elif self.botonfull_rec.collidepoint(pos) or self.botonfull2_rec.collidepoint(pos):
			self.botonfull.set_alpha(200)
			self.botonfull2[0][0].set_alpha(200)
		elif self.botonatras_rec.collidepoint(pos):
			self.botonatras.set_alpha(200)
		elif self.botonaplicar_rec.collidepoint(pos):
			self.botonaplicar.set_alpha(200)
	
	def graficar(self,main):	# Imprime todo
		main["general"]["pantalla"].blit(self.fondo,self.fondo_rec.topleft)
		main["general"]["pantalla"].blit(self.botonresolucion,self.botonresolucion_rec.topleft)
		main["general"]["pantalla"].blit(self.botonresolucion2,self.botonresolucion2_rec.topleft)
		main["general"]["pantalla"].blit(self.botonfull,self.botonfull_rec.topleft)
		main["general"]["pantalla"].blit(self.botonfull2[0][0],self.botonfull2_rec.topleft)
		main["general"]["pantalla"].blit(self.botonatras,self.botonatras_rec.topleft)
		main["general"]["pantalla"].blit(self.botonaplicar,self.botonaplicar_rec.topleft)
		
